-
Notifications
You must be signed in to change notification settings - Fork 363
Use quoted identifiers by default using R2DBC #2066
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
...ational/src/main/java/org/springframework/data/relational/core/sql/DefaultSqlIdentifier.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Several tests in JDBC are broken by this change
[ERROR] PartTreeJdbcQueryUnitTests.wrapsLikeOperatorParameterWithPercentSymbolsForNotContainingQuery:478
expected: "SELECT "users"."ID" AS "ID", "users"."AGE" AS "AGE", "users"."ACTIVE" AS "ACTIVE", "users"."LAST_NAME" AS "LAST_NAME", "users"."FIRST_NAME" AS "FIRST_NAME", "users"."DATE_OF_BIRTH" AS "DATE_OF_BIRTH", "users"."HOBBY_REFERENCE" AS "HOBBY_REFERENCE", "hated"."NAME" AS "HATED_NAME", "users"."USER_CITY" AS "USER_CITY", "users"."USER_STREET" AS "USER_STREET" FROM "users" LEFT OUTER JOIN "HOBBY" "hated" ON "hated"."USERS" = "users"."ID" WHERE "users"."FIRST_NAME" NOT LIKE :first_name"
but was: "SELECT "USERS"."ID" AS "ID", "USERS"."AGE" AS "AGE", "USERS"."ACTIVE" AS "ACTIVE", "USERS"."LAST_NAME" AS "LAST_NAME", "USERS"."FIRST_NAME" AS "FIRST_NAME", "USERS"."DATE_OF_BIRTH" AS "DATE_OF_BIRTH", "USERS"."HOBBY_REFERENCE" AS "HOBBY_REFERENCE", "HATED"."NAME" AS "HATED_NAME", "USERS"."USER_CITY" AS "USER_CITY", "USERS"."USER_STREET" AS "USER_STREET" FROM "USERS" LEFT OUTER JOIN "HOBBY" "HATED" ON "HATED"."USERS" = "USERS"."ID" WHERE "USERS"."FIRST_NAME" NOT LIKE :FIRST_NAME"
[ERROR] Errors:
[ERROR] JdbcRepositoryCreateIfNotFoundLookUpStrategyTests.derivedQueryShouldWork:50->AbstractJdbcRepositoryLookUpStrategyTests.callDerivedQuery:72 » InvalidDataAccessApiUsage No value supplied for the SQL parameter 'NAME': No value registered for key 'NAME'
[ERROR] JdbcRepositoryCreateLookUpStrategyTests.declaredQueryShouldWork:45->AbstractJdbcRepositoryLookUpStrategyTests.callDeclaredQuery:60 » InvalidDataAccessApiUsage No value supplied for the SQL parameter 'NAME': No value registered for key 'NAME'
[ERROR] JdbcRepositoryCreateLookUpStrategyTests.derivedQueryShouldWork:51->AbstractJdbcRepositoryLookUpStrategyTests.callDerivedQuery:72 » InvalidDataAccessApiUsage No value supplied for the SQL parameter 'NAME': No value registered for key 'NAME'
2b4b8fe
to
f0a0031
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I generally wonder about our testing approach. Enabling quoting requires downstream changes to every test we have where we interact with tables or verify SQL. The way table and column names are represented in the tests is a function of quoting and identifier processing.
How about having a set of test (like the dialect-specific ones in r2dbc.convert
and the Template tests) that make use of quoted identifiers. For all other cases, we could disable quoting and keep tests as they are.
Quoting introduces another level of complexity while the verifications we run have a different semantic subject.
spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/mapping/R2dbcMappingContext.java
Outdated
Show resolved
Hide resolved
spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/mapping/R2dbcMappingContext.java
Outdated
Show resolved
Hide resolved
Most tests got fixed by reverting to non quoted identifiers for the test. Interesting things that became obvious: - SpEL expressions get the transformed (e.g. upper case) and quoted table name!? See TableNameQueryPreprocessorUnitTests and SqlInspectingR2dbcRepositoryUnitTests Closes #1993 Original pull request #2066
f0a0031
to
6b2a7f7
Compare
I just pushed a new version of the PR. |
Introduce factory methods to create mapping contexts that use quoting and that use plain identifiers for easier creation of the correct mapping context.
73b8096
to
972bed0
Compare
Most tests got fixed by reverting to non quoted identifiers for the test. Interesting things that became obvious: - SpEL expressions get the transformed (e.g. upper case) and quoted table name!? See TableNameQueryPreprocessorUnitTests and SqlInspectingR2dbcRepositoryUnitTests Closes #1993 Original pull request #2066
That's merged and polished now. |
Most are test more or less obvious test fixes.
Interesting things that became obvious:
TableNameQueryPreoprocessorUnitTests
RenderContextFactor
has aNamingStrategy
!? That sounds all wrong to me. SeePostgresDialectRenderingUnitTests
Removed IdentifierProcessing from PostgresLockClause since it was cause circular dependencies between class constructions.
Closes #1993
Supersedes #2047